package version2024.medium;

import java.util.Scanner;

/**
 * @author sunhl
 * @Description: HJ82 将真分数分解为埃及分数   基础数学, 公式?
 * @Date: created in 2025/1/8 星期三 16:27
 * @Modified By:
 */
public class HJ82_DecomposeFractionToEgyptianFractions {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String[] sa = scanner.nextLine().split("/");
            // calcSimple(sa);
            calcNotSimple(sa);

        }
    }

    // 简单解, 可能过不了
    public static void calcSimple(String[] sa) {
        int f1 = Integer.parseInt(sa[0]);
        int f2 = Integer.parseInt(sa[1]);
        for (int i = 0; i < f1; i++) {
            if (i + 1 < f1) {
                System.out.print("1/" + f2 + "+");
            } else {
                System.out.println("1/" + f2);
            }
        }
    }

    /**
     * 数学家斐波那契提出的一种求解***分数的贪心算法，准确的算法表述应该是这样的：
     * 设某个真分数的分子为a，分母为b;
     * 把c=(1+b/a)作为分解式中第一个***分数的分母；
     * 将a-b%a作为新的a；
     * 将b*c作为新的b；
     * 如果a等于1，则最后一个***分数为1/b,算法结束；
     * 如果a大于1但是a能整除b，则最后一个***分数为1/(b/a),算法结束；
     * 否则重复上面的步骤。
     **/
    public static void calcNotSimple(String[] sa) {
        String res = "";
        String pre = "";
        long a = Long.valueOf(sa[0]);
        long b = Long.valueOf(sa[1]);
        while (true) {
            long c = 1 + b / a;
            res += "1/";
            res += c;
            res += "+";

            a = a - b % a;
            b = b * c;

            if (a == 1) {
                res += "1/";
                res += b;
                break;
            } else if (a > 1 && b % a == 0) {
                res += "1/";
                res += b / a;
                break;
            }
        }
        System.out.println(res);
    }
}
